package com.fotoloka.services.impl;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import com.fotoloka.dto.Chave;
import com.fotoloka.services.SerializadorService;

public class SerializadorServiceImpl implements SerializadorService {

	
	@Override
	public void serializeChaves(Chave chaves) {
		FileOutputStream arq = null;
		ObjectOutputStream out = null;
		try {
			//arquivo no qual os dados vao ser gravados
			arq = new FileOutputStream(SerializadorService.ARQUIVO);
			//objeto que vai escrever os dados
			out = new ObjectOutputStream(arq);
			//escreve todos os dados
			out.writeObject(chaves);
		} catch (IOException ex) {
			ex.printStackTrace();
		} finally {
			try {
				arq.close();
				out.close();
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		
	}

	@Override
	public Chave deserializeChaves() {
		FileInputStream arqLeitura = null;
		ObjectInputStream in = null;
		Chave chaves = null;
		try {
			//arquivo onde estao os dados serializados
			arqLeitura = new FileInputStream(SerializadorService.ARQUIVO);
			//objeto que vai ler os dados do arquivo
			in = new ObjectInputStream(arqLeitura);
			//recupera os dados
			chaves = (Chave) in.readObject();
		} catch (FileNotFoundException fne) {
			//arquivo nao encontrado
			return null;
		} 
		catch (ClassNotFoundException ex) {
			throw new RuntimeException(ex);
		} catch (IOException ex) {
			throw new RuntimeException(ex);
		} finally {
			try {
				if(arqLeitura != null)
					arqLeitura.close();
				if(in != null) 
					in.close();
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
	 
		return chaves;
	}

}
